#pragma once

#include <string>
#include "NeroCore\NRtti.h"

namespace Engine
{
class NResource : public Core::NRtti
{
	RTTI_DECLARATIONS(NResource, Core::NRtti);

public:
	NResource();

	NResource(const std::string& instanceName, const std::string& filePath);

	virtual ~NResource(void);

	std::string GetFileName() const;
	
	unsigned int GetHandle() const;

	std::string GetInstanceName() const;

	std::string GetFilePath() const;

	unsigned long GetRefCount() const;

	void IncreaseRefCount();
	
	void DecreaseRefCount();

protected:
	std::string mFileName;
	std::string mInstanceName;
	std::string mFilePath;
	bool mIsInitialized;
	unsigned long mRefCount;
};
}